perm filename VECT.FAI[SYS,HE] blob
sn#001821 filedate 1972-09-13 generic text, type T, neo UTF8
00100 ENTRY TRANSP,DOT,CROSS,TRANSF,SCALE,UNIT,PLUS,DIFFER
00200 ENTRY RESET,MAGNIT,REDUCE,TIMES,MOVEV,MOVET
00300 ENTRY NORMAL,INNER,INVERT,IDENTI,ADPFOR
00400
00500 EXTERNAL SQRT
00600
00700 DEFINE POPR & (A) {
00800 SUB P,X&A&A
00900 JRST @A(P)⎇
01000
01100 ↓FF←0
01200 ↓A←1
01300 ↓B←2
01400 ↓C←3
01500 ↓D←4
01600 ↓X←5
01700 ↓Y←6
01800 ↓Z←7
01900 ↓Q←10
02000 ↓AA←11
02100 ↓SP←16
02200 ↓P←17
02300
02400 TITLE VECTOR
02500
02600 ↓X11: 1(1)
02700 ↓X22: 2(2)
02800 ↓X33: 3(3)
02900 ↓X44: 4(4)
03000 ↓X66: 6(6)
03100 ↓ONE: 1.0
03200 ↓MLT: BLOCK 20
00100 BEGIN DOT
00200 ↑DOT: HRRZ C,-1(P) ;FIRST VECTOR
00300 HRRZ D,-2(P) ;SECOND VECTOR
00400 MOVE A,(C)
00500 FMPR A,(D) ;A←C1*D1
00600 MOVE B,1(C)
00700 FMPR B,1(D) ;B←C2*D2
00800 FADR A,B ;A←C1*D1+C2*D2
00900 MOVE B,2(C)
01000 FMPR B,2(D) ;B←C3*D3
01100 FADR A,B ;A←C.D
01200 MOVE B,3(C)
01300 FMPR B,3(D) ;W1*W2
01400 FDVR A,B
01500 POPR 3
01600 BEND
01700
00100 BEGIN ADPFOR
00200 ↑ADPFOR:
00300 ; ADPFOR(N,A,I,X,EX)
00400
00500 HRRZ X,-5(P)
00600 HRRZ Y,-3(P)
00700 HRRZ Z,-4(P)
00800 SOJ Y,
00900 IMUL Y,-2(Z)
01000 ADDI Z,(Y)
01100 ADDI X,(Z)
01200 HRRZ Y,-2(P)
01300 MOVN FF,-1(P)
01400 SETZ A,
01500 L1: MOVE C,(Z)
01600 FMPL C,(Y)
01700 UFA A,D
01800 FADL FF,C
01900 UFA A,B
02000 FADL FF,B
02100 AOJ Z,
02200 CAIGE Z,(X)
02300 AOJA Y,L1
02400 MOVN A,FF
02500 POPR 6
02600 BEND
00100 BEGIN CROSS
00200 ↑CROSS:HRRZ X,-1(P)
00300 HRRZ Y,-2(P)
00400 HRRZ Z,-3(P)
00500
00600 MOVE A,3(X)
00700 FMPR A,3(Y)
00800 MOVEM A,3(Z)
00900
01000 MOVE FF,(X)
01100 MOVE A,1(X) ;A=A2
01200 MOVE B,(Y) ;B=B1
01300 MOVE C,1(Y) ;C=B2
01400
01500 MOVE D,FF ;D=A1
01600 FMPR D,C ;D=A1B2
01700 MOVE Q,A ;Q=A2
01800 FMPR Q,B ;Q=A2B1
01900 FSBR Q,D ;Q=A1B2-A2B1
02000
02100 MOVE D,2(Y) ;D=B3
02200 FMPR FF,D ;FF=A1B3
02300 MOVE Y,2(X) ;Y=A3
02400 FMPR B,Y ;B=A3B1
02500 MOVEM Q,2(Z)
02600 FSBR FF,B ;FF=A3B1-A1B3
02700 MOVEM FF,1(Z)
02800
02900 FMPR A,D
03000 FMPR Y,C
03100 FSBR Y,A
03200 MOVEM Y,(Z)
03300 POPR 4
03400 BEND
00100 BEGIN INNER
00200 ↑INNER: HRRZ Z,-2(P)
00300 HRRZ Y,-1(P)
00400 MOVE A,(Z)
00500 FMPR A,(Y)
00600 MOVE B,1(Z)
00700 FMPR B,1(Y)
00800 FADR A,B
00900 MOVE B,2(Z)
01000 FMPR B,2(Y)
01100 FADR A,B
01200 MOVE B,3(Z)
01300 FMPR B,3(Y)
01400 FADR A,B
01500 POPR 3
01600 BEND
00100 BEGIN TRANSF
00200 S←1
00300 M←2
00400 V1←3
00500 V2←4
00600 V3←5
00700 V4←6
00800 I←7
00900 R←11
01000 T←14
01100 V←13
01200 ↑TRANSF:HRRZ R,-3(P)
01300 HRRZ T,-2(P)
01400 HRRZ V,-1(P)
01500 ADDI R,3
01600 ADDI T,14
01700 MOVEI I,3
01800 MOVE V1,(V)
01900 MOVE V2,1(V)
02000 MOVE V3,2(V)
02100 MOVE V4,3(V)
02200
02300 L1: MOVE S,V1
02400 FMPR S,(T)
02500 MOVE M,V2
02600 FMPR M,1(T)
02700 FADR S,M
02800 MOVE M,V3
02900 FMPR M,2(T)
03000 FADR S,M
03100 MOVE M,V4
03200 FMPR M,3(T)
03300 FADR S,M
03400 MOVEM S,(R)
03500 SOJ R,
03600 SUBI T,4
03700 SOJG I,L1
03800
03900 FMPR V1,(T)
04000 FMPR V2,1(T)
04100 FADR V1,V2
04200 FMPR V3,2(T)
04300 FADR V1,V3
04400 FMPR V4,3(T)
04500 FADR V1,V4
04600 MOVEM V1,(R)
04700 POPR 4
04800 BEND
00100 BEGIN SCALE
00200 ↑MOVEV: AOBJN P,.+1
00300 SKIPA Q,[JRST @3(P)]
00400 ↑SCALE:MOVE Q,[JFCL]
00500 HRRZ Z,-3(P)
00600 HRRZ Y,-2(P)
00700 HRRZI X,3(Z)
00800 CAIN Z,(Y)
00900 JRST MOVED
01000 HRLI Z,(Y)
01100 BLT Z,(X)
01200 MOVED: SUB P,X44
01300 XCT Q
01400 MOVE A,3(P)
01500 FMPRM A,-1(X)
01600 FMPRM A,-2(X)
01700 FMPRM A,-3(X)
01800 JRST @4(P)
01900 BEND
00100 BEGIN MOVET
00200 ↑MOVET: HRRZ Z,-2(P)
00300 HRL Z,-1(P)
00400 HRRZI Y,17(Z)
00500 BLT Z,(Y)
00600 POPR 3
00700 BEND
00100 BEGIN TRANSP
00200 ↑TRANSP:HRRZ Z,-2(P)
00300 HRL Y,-1(P)
00400 HRRI Y,MLT
00500 BLT Y,MLT+17
00600 MOVE A,MLT
00700 MOVEM A,(Z)
00800 MOVE A,4+MLT
00900 MOVEM A,1(Z)
01000 MOVE A,10+MLT
01100 MOVEM A,2(Z)
01200 MOVE A,14+MLT
01300 MOVEM A,3(Z)
01400 MOVE A,1+MLT
01500 MOVEM A,4(Z)
01600 MOVE A,5+MLT
01700 MOVEM A,5(Z)
01800 MOVE A,11+MLT
01900 MOVEM A,6(Z)
02000 MOVE A,15+MLT
02100 MOVEM A,7(Z)
02200 MOVE A,2+MLT
02300 MOVEM A,10(Z)
02400 MOVE A,6+MLT
02500 MOVEM A,11(Z)
02600 MOVE A,12+MLT
02700 MOVEM A,12(Z)
02800 MOVE A,16+MLT
02900 MOVEM A,13(Z)
03000 MOVE A,3+MLT
03100 MOVEM A,14(Z)
03200 MOVE A,7+MLT
03300 MOVEM A,15(Z)
03400 MOVE A,13+MLT
03500 MOVEM A,16(Z)
03600 MOVE A,17+MLT
03700 MOVEM A,17(Z)
03800 POPR 3
03900 BEND
00100 BEGIN UNIT
00200 ↑UNIT: HRRZ Z,-2(P)
00300 HRRZ X,-1(P)
00400 MOVE AA,(X)
00500 MOVEM AA,(Z)
00600 FMPR AA,AA
00700 MOVE B,1(X)
00800 MOVEM B,1(Z)
00900 FMPR B,B
01000 FADR AA,B
01100 MOVE B,2(X)
01200 MOVEM B,2(Z)
01300 FMPR B,B
01400 FADR AA,B
01500 PUSH P,AA
01600 PUSHJ P,SQRT
01700 HRRZ X,-1(P)
01800 SKIPGE 3(X)
01900 MOVN A,A
02000 HRRZ Z,-2(P)
02100 MOVEM A,3(Z)
02200 POPR 3
02300 BEND
02400
02500 BEGIN NORMAL
02600 ↑NORMAL:HRRZ X,-1(P)
02700 MOVE A,(X)
02800 FMPR A,A
02900 MOVE B,1(X)
03000 FMPR B,B
03100 FADR A,B
03200 MOVE B,2(X)
03300 FMPR B,B
03400 FADR A,B
03500 PUSH P,A
03600 PUSHJ P,SQRT
03700 HRRZ X,-1(P)
03800 HRRZ Z,-2(P)
03900 MOVE B,(X)
04000 FDVR B,A
04100 MOVEM B,(Z)
04200 MOVE B,1(X)
04300 FDVR B,A
04400 MOVEM B,1(Z)
04500 MOVE B,2(X)
04600 FDVR B,A
04700 MOVEM B,2(Z)
04800 MOVE B,3(X)
04900 FDVR B,A
05000 MOVEM B,3(Z)
05100 POPR 3
05200 BEND
00100 BEGIN IDENTITY
00200 ↑IDENTI:HRRZ Z,-1(P)
00300 HRRZI Y,17(Z)
00400 HRLI Z,[FOR A IN (1.0,0,0,0,0,1.0,0,0,0,0,1.0,0,0,0,0,1.0)
00500 {A
00600 ⎇]
00700 BLT Z,(Y)
00800 POPR 2
00900 BEND
00100 BEGIN SUB
00200 ↑DIFFER:SKIPA Q,[FSBR A,B]
00300 ↑PLUS: MOVE Q,[FADR A,B]
00400 HRRZ X,-2(P) ;A
00500 HRRZ Y,-1(P) ;B
00600 HRRZ Z,-3(P) ;RESULT
00700 MOVE C,3(X)
00800 MOVE D,3(Y)
00900 MOVE A, (X)
01000 CAMN D,ONE
01100 TLO X,1
01200 MOVE B, (Y)
01300 CAMN C,ONE
01400 TLO X,2
01500 TLNN X,1
01600 FMPR A,D
01700 TLNN X,2
01800 FMPR B,C
01900 XCT Q
02000 MOVEM A, (Z)
02100 MOVE A,1(X)
02200 MOVE B,1(Y)
02300 TLNN X,1
02400 FMPR A,D
02500 TLNN X,2
02600 FMPR B,C
02700 XCT Q
02800 MOVEM A,1(Z)
02900 MOVE A,2(X)
03000 MOVE B,2(Y)
03100 TLNN X,1
03200 FMPR A,D
03300 TLNN X,2
03400 FMPR B,C
03500 XCT Q
03600 MOVEM A,2(Z)
03700 FMPR C,D
03800 MOVEM C,3(Z)
03900 POPR 4
04000 BEND
04100
00100 BEGIN MAGNITUDE
00200 ↑MAGNIT:HRRZ Z,-1(P)
00300 MOVE AA,(Z)
00400 FMPR AA,AA
00500 MOVE B,1(Z)
00600 FMPR B,B
00700 FADR AA,B
00800 MOVE B,2(Z)
00900 FMPR B,B
01000 FADR AA,B
01100 PUSH P,AA
01200 PUSHJ P,SQRT
01300 HRRZ Z,-1(P)
01400 FDVR A,3(Z)
01500 MOVM A,A
01600 POPR 2
01700 BEND
00100 BEGIN REDUCE
00200 ↑REDUCE:HRRZ Z,-1(P)
00300 MOVSI B,(1.0)
00400 MOVSI A,(1.0)
00500 FDVR B,3(Z)
00600 MOVEM A,3(Z)
00700 HRRZI X,2(Z)
00800 L1: FMPRM B,(X)
00900 CAIE X,(Z)
01000 SOJA X,L1
01100 POPR 2
01200 BEND
00100 BEGIN RESET
00200 ↑RESET:HRRZ Z,-1(P)
00300 HRRZI X,3(Z)
00400 SETZB A,C
00500 MOVEI D,377
00600 L1: MOVM B,(X)
00700 JUMPN B,.+2
00800 MOVSI B,(1.0)
00900 LSHC A,11
01000 CAIL A,(C)
01100 HRRI C,(A)
01200 CAIG A,(D)
01300 HRRI D,(A)
01400 CAIE X,(Z)
01500 SOJA X,L1
01600 ADDI C,(D)
01700 ASH C,-1
01800 MOVEI D,200
01900 SUBI D,(C)
02000 HRRZI X,3(Z)
02100 L2: MOVE A,(X)
02200 FSC A,(D)
02300 MOVEM A,(X)
02400 CAIE X,(Z)
02500 SOJA X,L2
02600 POPR 2
02700 BEND
00100 BEGIN TRANSMULT
00200 S←1
00300 M←2
00400 A1←3
00500 A2←4
00600 A3←5
00700 A4←6
00800 I←7
00900 J←10
01000 R←11
01100 T←14
01200 U←13
01300 ↑TIMES:HRL T,-1(P)
01400 HRRI T,MLT
01500 BLT T,MLT+17
01600 MOVEI T,MLT+3
01700 HRRZ U,-2(P)
01800 HRRZ R,-3(P)
01900 ADDI R,17
02000 ADDI U,14
02100 MOVEI I,4
02200
02300 L1: MOVEI J,3
02400
02500 MOVE A1,(U)
02600 MOVE A2,1(U)
02700 MOVE A3,2(U)
02800 MOVE A4,3(U)
02900 L2: MOVE S,A1
03000 FMPR S,(T)
03100 MOVE M,A2
03200 FMPR M,4(T)
03300 FADR S,M
03400 MOVE M,A3
03500 FMPR M,10(T)
03600 FADR S,M
03700 MOVE M,A4
03800 FMPR M,14(T)
03900 FADR S,M
04000 MOVEM S,(R)
04100 SOJ R,
04200 SOJ T,
04300 SOJG J,L2
04400
04500 FMPR A1,(T)
04600 FMPR A2,4(T)
04700 FADR A1,A2
04800 FMPR A3,10(T)
04900 FADR A1,A3
05000 FMPR A4,14(T)
05100 FADR A1,A4
05200 MOVEM A1,(R)
05300 SOJ R,
05400 ADDI T,3
05500 SUBI U,4
05600 SOJG I,L1
05700
05800 POPR 4
05900 BEND
00100 BEGIN INVERT
00200 ↑INVERT:HRRZ Z,-2(P) ;RESULT
00300 HRL Y,-1(P)
00400 HRRI Y,MLT
00500 BLT Y,MLT+17
00600 MOVEI Y,MLT+2
00700 MOVN A,MLT+3
00800 MOVN B,MLT+7
00900 MOVN C,MLT+13
01000 HRRZI X,13(Z)
01100 L1: MOVE FF,A
01200 FMPR FF,(Y)
01300 MOVE Q,B
01400 FMPR Q,4(Y)
01500 FADR FF,Q
01600 MOVE Q,C
01700 FMPR Q,10(Y)
01800 FADR FF,Q
01900 MOVEM FF,(X)
02000 SUBI X,4
02100 CAIG X,(Z)
02200 JRST L2
02300 SOJA Y,L1
02400
02500 L2: MOVE A,MLT
02600 MOVEM A,(Z)
02700 MOVE A,1+MLT
02800 MOVEM A,4(Z)
02900 MOVE A,2+MLT
03000 MOVEM A,10(Z)
03100 MOVE A,4+MLT
03200 MOVEM A,1(Z)
03300 MOVE A,5+MLT
03400 MOVEM A,5(Z)
03500 MOVE A,6+MLT
03600 MOVEM A,11(Z)
03700 MOVE A,10+MLT
03800 MOVEM A,2(Z)
03900 MOVE A,11+MLT
04000 MOVEM A,6(Z)
04100 MOVE A,12+MLT
04200 MOVEM A,12(Z)
04300
04400 SETZM 14(Z)
04500 SETZM 15(Z)
04600 SETZM 16(Z)
04700 MOVSI A,(1.0)
04800 MOVEM A,17(Z)
04900 POPR 3
05000 BEND
00100 END